package com.cn.dim.service;

import java.util.List;
import java.util.Map;

import com.cn.dim.pojo.Dep;
import com.cn.dim.pojo.User;

public interface UserService {
	//根据查询条件查询用户列表，列表的每一行以键值对的形式提现，并且查询条件中部门（职位），角色也需要预加载；
	public List<Map<String,Object>> queryUser(Map<String,Object> m);
	public List<Map<String,Object>> queryDepPosName(Map<String,Object> m);//根据用户id查询部门与职位名称
	
	//第二个参数是用户角色中间表数据，第三个参数是用户部门职位中间表数据
	public int insertUser(User u,Map<String,Object> u_r,Map<String,Object> u_d_p);
	
	public List<Map<String,Object>> queryRole(Map<String,Object> m);//用于查询条件中的“权限模版下拉”，以及添加修改页中的“权限模版下拉”；
	//树形下拉需要返回一个实体对象的list
	public List<Dep> queryDep(Map<String,Object> m);//用于查询条件中的“部门下拉”，以及添加修改页中的“部门下拉”；
	public List<Map<String,Object>> queryPos(Map<String,Object> m);//用于查询条件中的“职位下拉”，以及添加修改页中的“职位下拉”；
	public List<Map<String,Object>> getDep(Map<String,Object> m);//根据用户id查询部门列表，当前认为每个用户对应单一部门，返回值中只有1个元素（参数是map，key为userid，value为userid的值）
	
	//第二个参数是用于删除中间表所需要的参数，第三个与第四个参数是用于删除中间表后再插入时所需要的参数
	public int updateUser(User u,Map<String,Object> m,Map<String,Object> u_r,Map<String,Object> u_d_p);
	public int updatePassword(User u);//修改密码
	
	public int delUser(Map<String,Object> m);//删除主表，参数实际上需要用户id
	
	public User queryUserById(Map<String,Object> m);//用于修改页面
	public List<Map<String,Object>> getRole(Map<String,Object> m);
	
	//由excel导入
	public int importUser(List<User> userList,List<Map<String,Object>> u_d_pList,List<Map<String,Object>> u_rList);
	
	//微信相关
	public boolean isWxAlreadyLogin(Map<String,Object> m);//作用：判断该userid是否在user表中保存有信息，空串不算（用于判断该微信用户是否登录过）
	public User getWxLoginUserByOpenid(Map<String,Object> m);//作用：根据openid获取用户实体对象
	public int bindingOpenid(Map<String,Object> m);//用户表中修改一条记录，将登录用户与openid进行关联
	public int wxLogOut(Map<String,Object> m);//（注销）用户表中修改一条记录，将登录用户与openid进行解绑	
}
